This invention relates generally to computer programs and is particularly directed to an active probe inserted in a software package to verify compatibility of the package with other applications with which it is intended to operate.
In distributed software systems, the functionality of the system typically involves interaction between many different software packages or applications. In this modular software approach, it is possible to upgrade one package without upgrading others. A common example of this is the personal computer (PC). The various applications available in a PC, such as, spreadsheets, email and word processing, communicate and derive services from the PC""s operating system (O/S). It is possible to upgrade one or more applications, e.g., install a new version of the word processing program or upgrade the operating system, e.g., change from Windows 95 to Windows 98, without replacing all of the software in the system.
A potential problem with this approach is in determining whether a given application will continue to work with other applications in the system after the application has been upgraded. In most cases, compatibility verification is determined by the installer of the software, typically by either checking written documentation associated with each package and/or trial and error. However, the documentation associated with a given software package, particularly if the package has undergone numerous changes or updates, is frequently not available, or even if available, is not current. The trial and error approach to verifying software package compatibility is labor intensive and thus expensive. This approach is also subject to human error, particularly when the new or revised package employs subtending functions from other operating software packages.
The present invention addresses the aforementioned limitations of the prior art by providing active probes in a software package which allow the installer of the package to determine immediately at the time of installation of the new package if the associated software has all the services necessary to correctly run the new software package.
This invention contemplates active software probes in the form of small functions built into an application package that can be invoked by another application. When invoked, the probes return a positive response if the service being requested is available from the probed software package. If the service is not available, the probe will fail alerting the installer that something is not right. Because the probe is active, it can check for subtending capabilities that the calling application may not realize are necessary for this service. For example, application A knows that it needs capability X to operate correctly. When application A starts, it calls the probe for capability X and, if it gets a positive response, application A continues its operation. The probe for capability X may have encoded into it that it needs capability Y to satisfy the needs that application A has requested. In this case, the active probe for X will call for probe for Y to ensure that X application A can be fully satisfied. This ensures full coverage of the test while hiding some implementation details of each probed capability from the calling application. By invoking these active probes upon installation of a new software package, the installer learns immediately if the software package has all services necessary to run correctly. The active probe approach of the present invention is thus based on a functionality test, rather than the release number of a particular software package. This allows software applications to probe for desired functionality without a priori knowledge of the contents of a given release. The active probes are also capable of testing for subtending capabilities of the probed application with other software applications. The ability to test for subtending capabilities allows for implementation details of the probed application to be hidden from the calling application while ensuring complete identification of application coverage.